In a typical example, a “system on a chip” is an integrated circuit that comprises a programmable processor and a plurality of circuit blocks with specific functions that will be accessed by the processor. Usually, the circuit blocks have each been designed apart from the context of that integrated circuit. During system design they are selected and combined to realize a specified system. The skilled person commonly refers to such circuit blocks as “IP blocks” (Intellectual Property blocks). The skilled person uses this term both to refer to design information that can be used to implement the circuit block, as well as to refer to the actual circuit block in the physical circuit.
The designers of the system on a chip make a selection of the IP blocks that will be incorporated and their connections. The designers of the system on a chip also have to provide the program for the programmable processor. Typically, the programmable processor is programmed with application software and application interface software for the different IP blocks. The application software is designed by the designers of the system on a chip. The application interface software is designed by the designers of the IP blocks. Usually, the application interface software can be called from (or makes call to) the application software, using a standard application programming interface (API). To give effect to such calls, the application interface software needs to have a “software model” in terms of addresses at which the programmable processor can address each IP block in the system on a chip and optionally also other system parameters of the implementation of the IP block in the system on a chip.
Typically, the design process of the system on a chip starts from a design specification in terms of the functions of the IP blocks used, their functional connection and application functions. This specification is translated in successive stages until it results into a definition of basic circuit components in the integrated circuit. In parallel, the specification is also translated into software. The system parameters used by the software must correspond to the circuit definition that has resulted from the specification.
The huge complexity of many systems on a chip and the participation of many different designers makes the design of such systems very susceptible to errors. This makes it necessary to perform extensive verification of the design. As used herein, verification is a design stage before the physical manufacturing stage of the circuit, aimed at the detection of design errors that, if not corrected, would be present in all manufactured products. In current day design, more than two thirds of integrated circuit implementation effort is involved in verification. It is desirable to reduce this effort.
One type of verification involves the question whether the system parameters that result from the definition of the circuit correspond to the parameters used by the software. This verification potentially addresses both discrepancies between the circuit and software design processes, as well as errors in these processes. It would be desirable to automate this process.
After manufacture, it is known to test manufactured integrated circuits that contain a system on a chip by performing tests of the individual IP blocks and by performing tests of the connections between the IP blocks. The tests of the individual IP blocks are usually defined by the designers of the IP blocks. Such tests may involve structural tests, such as scan tests. Such tests may involve functional tests wherein test data is supplied to an IP block, via a system bus or a special test bus and the response of the IP block is observed.
The tests of the connections between IP blocks may include use of a boundary scan test. US 20040019840 describes testing of connections between logic blocks wherein a signal generating section supplies test signals to outputs of a logic block. Signals from inputs of another logic block, at the other side of the connections, are supplied to a verification circuit. The verification circuit compares the test signals with the signals at the input of the other logic block.
It should be noted that this type of circuit is provided for the purpose of testing manufactured integrated circuits and not for the purpose of verifying the design of the integrated circuit before manufacture. The required test circuitry is usually added after completion of the design, in a way that makes the test circuitry transparent for the designed circuit. For example, boundary scan circuitry typically comprises flipflops at the input and output pins that are made transparent during normal use. As a result, known test circuitry cannot be used during design verification, simply because it is not present in the design. Even after the test circuitry has been added to the design, conventional test circuitry still cannot be used for verification because it is functionally transparent.